﻿Public Class AIValueRefForm
    Private _pi As ProjectItem

    '选择设备的网络地址
    Private _netID As Byte = 0

    Private _portNo As Integer = 0

    '起始地址
    Private _offset As UShort = 4104

    Private _offsetEx16 As UShort = 4080

    Private buf() As Single

    Private bufEc(32) As Single

    Private ExTypeItem As Boolean
    Private _offsetType As UShort = 12   '兼容模块类型地址
    Private buf1() As UShort

    Private Ex16Type As Integer
    '正在修改参数标志
    Private _isModify As Boolean = False
    Private _offsetNum As UShort = 2010   '兼容模块数量起始地址
    Private ExAiNum As Integer   '兼容模块配置AI数量


    Private Sub ClearData()
        For Each ctl As Control In Me.RevisePanel.Controls
            If ctl.GetType Is GetType(NumericUpDown) Then
                CType(ctl, NumericUpDown).Value = 0
            End If
        Next
    End Sub

    Private Sub LoadAllRef()
        Dim tn As TreeNode
        Dim tn1 As TreeNode

        Dim dts As New DevTypeService(_pi)
        Dim rts As New RefTypeService(_pi)


        For Each dti As DevTypeItem In dts.GeDevGroupList()   '设备列表
            
            For Each rti As RefTypeItem In rts.GeRefGroupList(dti.NetId) '增加该设备冷库信息

                tn = Me.TreeView1.Nodes.Add(rti.RefName)
                tn.Tag = rti

                Dim ais As New AiPortTypeService(rti)

                For Each ai As AiPortTypeItem In ais.GetAiGroupList()

                    tn1 = tn.Nodes.Add(ai.PortName)
                    tn1.Tag = ai

                Next
            Next
        Next

        Me.TreeView1.ExpandAll()

    End Sub


    Private Sub TBCCAIReviseForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        _pi = MainForm.pi

        'ProjectService.RefreshCurProjectList(_pi.ProjectID) '刷新当前工程信息

        ClearData()

        Me.HideAllControl()

        LoadAllRef()

    End Sub

    ''' <summary>
    ''' 保存数据
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub btnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
        Dim result As Boolean = False
        ' Dim devtype As Integer
        ' devtype = DevTypeService.GetdevType(MainForm.pi.ProjectID, _netID)
        Me.Cursor = Cursors.WaitCursor
        TreeView1.Enabled = False
        Me.btnOK.Enabled = False
        Me.btnCancel.Enabled = False
        Me.RevisePanel.Enabled = False
        Me._isSaving = True
        result = Save()
        Me._isSaving = False
        Me.btnOK.Enabled = True
        Me.btnCancel.Enabled = True
        Me.RevisePanel.Enabled = True

        Me.Cursor = Cursors.Default

        If result Then
            EnableModify(False)
            msg.Show("参数保存成功")
            Select Case Ex16Type
                Case 1
                    RefreshData(_portNo) '重新读取数据
                Case 16
                    'If ExTypeItem Then

                    '    Me.btnModify.Enabled = False

                    '    result = RefreshDataEx16_type()

                    '    If result Then
                    '        Me.btnModify.Enabled = True
                    '    Else

                    '        Me.btnModify.Enabled = False

                    '    End If

                    'Else
                    '读取参数
                    result = RefreshDataEx16(_portNo)
                    'End If
                    'RefreshDataEx16() '重新读取数据

            End Select


        Else
            msg.ShowError("参数保存失败")
        End If
        TreeView1.Enabled = True
    End Sub
    ''' <summary>
    ''' 返回兼容模块中模拟传感器数量
    ''' </summary>
    ''' 
    ''' <returns></returns>
    ''' <remarks></remarks>
    Private Function GetEcAivalue() As Integer
        Dim k() As UShort = Nothing
        Try
            k = COMHelper.Instance.Send4UShort(_netID, FunctionCode.WordWritableRead, _offsetNum, 1)
        Catch ex As Exception
            Debug.WriteLine(ex.Message)
        Finally
            Me.Cursor = Cursors.Default

        End Try

        If k Is Nothing Then

            Return 0
        End If


        Return k(0)
    End Function

    Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
        Me.Close()
    End Sub

    Private Sub btnModify_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnModify.Click
        Me.btnModify.Enabled = False

        If Ex16Type = 16 AndAlso ExTypeItem = True Then
            'EnableModifyEc(True)
            '开始发送心跳包
            Me.TimerHeart.Start()

            EnableModify(True)

        Else
            If EnterModify() = False Then
                msg.Show("无法修改参数请重试")
                Me.btnModify.Enabled = True
                Exit Sub
            End If

            EnableModify(True)

        End If


        


    End Sub

    Private Sub EnableModify(ByVal value As Boolean)

        Me.btnModify.Enabled = Not value
        Me.btnOK.Enabled = value

        For Each ctl As Control In Me.RevisePanel.Controls
            If ctl.GetType Is GetType(NumericUpDown) Then
                CType(ctl, NumericUpDown).ReadOnly = Not value
                CType(ctl, NumericUpDown).Increment = IIf(value, 1, 0)
            End If
        Next

    End Sub
    Private Sub EnableModifyEc(ByVal value As Boolean)

        Me.btnModify.Enabled = Not value
        Me.btnOK.Enabled = value

        For Each ctl As Control In Me.RevisePanel.Controls
            If ctl.GetType Is GetType(NumericUpDown) Then
                Dim nud As NumericUpDown = CType(ctl, NumericUpDown)

                nud.Increment = IIf(value, 1, 0)
                If nud.Tag Mod 16 > ExAiNum - 1 Then
                    nud.Enabled = False
                Else

                    nud.ReadOnly = Not value

                End If
            End If
        Next

    End Sub


    '隐藏/显示Panel中的所有控件
    Private Sub HideAllControl()
        For Each ctl As Control In Me.RevisePanel.Controls
            ctl.Visible = False
            If ctl.GetType Is GetType(NumericUpDown) Then
                CType(ctl, NumericUpDown).ReadOnly = True
                CType(ctl, NumericUpDown).Increment = False
            End If
        Next

        Me.btnModify.Enabled = False
        Me.btnOK.Enabled = False
        Me.lbl_tip.Visible = True
        Me.lblSelected.Text = ""

    End Sub

    '根据设备类型修改panel中numupdw控件的布局
    Private Sub SetPanelLayout(ByVal DevType As Integer, ByVal enable As Boolean)



        NumericUpDown1.Tag = 0
       

        NumericUpDown1.Visible = True

        Label1.Visible = NumericUpDown1.Visible
       


      

    End Sub


    Private Sub SetToolTip(ByVal NetID As Integer)
        Dim portNo As Integer
        Dim str As String
        Dim portType As String = "未知"
        Dim rts As New RefTypeService(_pi)

        For i As Integer = 0 To 11
            ToolTip1.SetToolTip(labList(i), "未使用")
            ToolTip1.SetToolTip(nudList(i), "未使用")
        Next

        For Each rti As RefTypeItem In rts.GeRefGroupList()
            If rti.NetId = NetID Then
                Dim ats As New AiPortTypeService(rti)
                For Each ati As AiPortTypeItem In ats.GetAiGroupList()
                    portNo = ati.PortNo - 1
                    If portNo < 0 Then Continue For
                    If ati.DataType = 1 Then
                        portType = "温度"
                    ElseIf ati.DataType = 2 Then
                        portType = "湿度"
                    End If
                    str = String.Format("{0}: {1}({2})", rti.RefName, ati.PortName, portType)
                    ToolTip1.SetToolTip(labList(portNo), str)
                    ToolTip1.SetToolTip(nudList(portNo), str)
                Next
            End If
        Next

    End Sub
    Private Sub SetToolTipEx16(ByVal NetID As Integer)
        Dim portNo As Integer
        Dim str As String
        Dim portType As String = "未知"
        Dim rts As New RefTypeService(_pi)

        For i As Integer = 0 To 31
            ToolTip1.SetToolTip(labList(i), "未使用")
            ToolTip1.SetToolTip(nudList(i), "未使用")
        Next

        For Each rti As RefTypeItem In rts.GeRefGroupList()
            If rti.NetId = NetID Then
                Dim ats As New AiPortTypeService(rti)
                For Each ati As AiPortTypeItem In ats.GetAiGroupList()
                    portNo = ati.PortNo - 1
                    If portNo < 0 Then Continue For
                    If ati.DataType = 1 Then
                        portType = "温度"
                    ElseIf ati.DataType = 2 Then
                        portType = "湿度"
                    End If
                    str = String.Format("{0}: {1}({2})", rti.RefName, ati.PortName, portType)
                    ToolTip1.SetToolTip(labList(portNo), str)
                    ToolTip1.SetToolTip(nudList(portNo), str)
                Next
            End If
        Next

    End Sub

    ''' <summary>
    ''' 保存所有参数
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Private Function Save() As Boolean

        Dim tic As New TranstrationItem()
        Dim strSql As String
        ' Dim devtype As Integer
        ' devtype = DevTypeService.GetdevType(MainForm.pi.ProjectID, _netID)

        For Each ctl As Control In Me.RevisePanel.Controls
            If ctl.GetType Is GetType(NumericUpDown) Then
                Dim nud As NumericUpDown = CType(ctl, NumericUpDown)

                Select Case Ex16Type
                    Case 1
                        If nud.Visible = True Then
                            If buf(nud.Tag) <> nud.Value Then
                                '参数已修改，需要保存
                                If Not Save((_portNo - 1), nud.Value) Then
                                    Return False
                                End If

                                '保存校准日志
                                strSql = String.Format("insert into tbccCalibLog(ProjectID,NetID,CalibTime,CalibType,CalibPort,UserName,OldValue,NewValue) values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}' )" _
                                , _pi.ProjectID, _netID, Now.ToString("yyyy-MM-dd HH:mm:ss"), 2, _portNo, TBCC.UserManage.User.Instance.uName, buf(CInt(nud.Tag)), nud.Value)
                                tic.Add(strSql, Nothing)
                            End If

                        End If
                       
                        
                    Case 16
                        If ExTypeItem Then

                            If nud.Tag Mod 16 > ExAiNum Then
                                Continue For

                            End If

                            If buf(nud.Tag) <> nud.Value Then

                                '参数已修改，需要保存
                                If Not saveEx16_type((_portNo - 1), nud.Value) Then
                                    Return False
                                End If

                                '保存校准日志
                                strSql = String.Format("insert into tbccCalibLog(ProjectID,NetID,CalibTime,CalibType,CalibPort,UserName,OldValue,NewValue) values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}' )" _
                                , _pi.ProjectID, _netID, Now.ToString("yyyy-MM-dd HH:mm:ss"), 2, _portNo, TBCC.UserManage.User.Instance.uName, bufEc(CInt(nud.Tag)), nud.Value)
                                tic.Add(strSql, Nothing)
                            End If

                        Else
                            If buf(nud.Tag) <> nud.Value Then

                                '参数已修改，需要保存
                                If Not saveEx16((_portNo - 1), nud.Value) Then
                                    Return False
                                End If

                                '保存校准日志
                                strSql = String.Format("insert into tbccCalibLog(ProjectID,NetID,CalibTime,CalibType,CalibPort,UserName,OldValue,NewValue) values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}' )" _
                                , _pi.ProjectID, _netID, Now.ToString("yyyy-MM-dd HH:mm:ss"), 2, _portNo, TBCC.UserManage.User.Instance.uName, buf(CInt(nud.Tag)), nud.Value)
                                tic.Add(strSql, Nothing)
                            End If


                        End If


                End Select


                
            End If
        Next

        If Ex16Type = 16 AndAlso ExTypeItem = True Then

            '停止发送心跳包
            Me.TimerHeart.Stop()
        Else

            '设置修改使能变量
            If ParameterModifyClass.SetModifyConfirm(_netID) = False Then
                Return False
            End If

            ' Me.TimerHeart.Stop()

            '修改门变量
            If ExitModify() = False Then
                Debug.Write("ExitModify错误")
            End If

        End If

        

        '执行校准记录保存
        SqlHelper.ExecuteTranstration(tic)

        Return True

    End Function

    ''' <summary>
    ''' 保存参数
    ''' </summary>
    ''' <param name="index"></param>
    ''' <param name="value"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Private Function save(ByVal index As UShort, ByVal value As Single) As Boolean
        Dim offset As UShort = _offset + index * 2 + 1000
        Return COMHelper.Instance.Write(_netID, FunctionCode.WordWrite, offset, value)
    End Function
    ''' <summary>
    ''' 保存参数
    ''' </summary>
    ''' <param name="index"></param>
    ''' <param name="value"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Private Function saveEx16(ByVal index As UShort, ByVal value As Single) As Boolean
        Dim offset As UShort = _offsetEx16 + index * 2 + 1000
        Return COMHelper.Instance.Write(_netID, FunctionCode.WordWrite, offset, value)
    End Function
    ''' <summary>
    ''' 保存参数
    ''' </summary>
    ''' <param name="index"></param>
    ''' <param name="value"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Private Function saveEx16_type(ByVal index As UShort, ByVal value As Single) As Boolean
        Dim offset As UShort = _offsetEx16 + index * 2
        Return COMHelper.Instance.Write(_netID, FunctionCode.WordWrite, offset, value)
    End Function

    ''' <summary>
    ''' 进入修改
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Private Function EnterModify() As Boolean
        If g_test Then
            _isModify = True
            Return True
        End If

        _isModify = True

        Dim result As Boolean
        result = ParameterModifyClass.EnterModify(_netID)

        If result = False Then
            _isModify = False
            Return False
        End If

        '开始发送心跳包
        Me.TimerHeart.Start()

        Return True
    End Function


    ''' <summary>
    ''' 退出修改
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Private Function ExitModify() As Boolean
        '门变量置为1
        Dim result As Boolean
        result = ParameterModifyClass.ExitModify(_netID)

        '停止发送心跳包
        Me.TimerHeart.Stop()

        If result = True Then  '修改门变量成功
            _isModify = False
        End If

        Return True
    End Function


#Region "发送心跳包"

    '心跳包连续发送错误的次数
    Private _heartFailCount As Integer = 0

    '心跳值
    Private _heartValue As Short = 0

    '心跳值是否初始化
    Private _bheartValue As Boolean = False

    '是否正在发送心跳标志
    Private _heartSending As Boolean = False

    '是否正在保存标志
    Public _isSaving As Boolean = False

    '心跳包地址
    Private _heartIncreamentAddress As UShort = 7063
    '心跳参数ID为选择ID
    Private netid As Byte

    ''' <summary>
    ''' 发送心跳包
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub HeartSend()
        If _bheartValue = False Then
            Dim b() As Short
            netid = _netID
            b = COMHelper.Instance.Send4Short(netid, FunctionCode.WordWritableRead, _heartIncreamentAddress, 1)
            If b IsNot Nothing AndAlso b.Length = 1 Then
                _heartValue = b(0)
                _bheartValue = True
            Else
                Exit Sub
            End If
        End If

        _heartValue = (_heartValue + 1) Mod UShort.MaxValue

        Dim result As Boolean
        result = COMHelper.Instance.Write(netid, FunctionCode.WordWrite, _heartIncreamentAddress, _heartValue)

        If result Then
            _heartFailCount = 0
        Else
            _heartFailCount += 1
        End If

        If _heartFailCount > 10 Then
            '提示用户可能断开连接了.
        End If

    End Sub

    ''' <summary>
    ''' 心跳定时器Tick事件
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub TimerHeart_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerHeart.Tick
        If Not g_HeartSend Then
            Exit Sub
        End If

        If _heartSending OrElse _isSaving Then
            Exit Sub
        End If

        _heartSending = True
        Me.HeartSend()
        _heartSending = False
    End Sub

#End Region

    Protected Overrides Sub OnClosing(ByVal e As System.ComponentModel.CancelEventArgs)
        If Me._isModify Then
            Me.ExitModify()
        End If
        MyBase.OnClosing(e)
    End Sub

    Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
        Dim tn As TreeNode

        Dim ai As AiPortTypeItem
        Dim result As Boolean

        tn = Me.TreeView1.SelectedNode

        If tn Is Nothing Then
            Exit Sub
        End If

        If TypeOf tn.Tag Is RefTypeItem Then
            Exit Sub
        End If


        If TypeOf tn.Tag Is AiPortTypeItem Then

            TreeView1.Enabled = False

            ClearData() '切换前先清除显示修正数据

            ai = CType(tn.Tag, AiPortTypeItem)

            '显示选择设备的名称
            Me.lblSelected.Text = tn.Text

            '关闭设备选择提示
            lbl_tip.Visible = False

            '禁止点击"修改"按钮前修改参数
            Me.btnModify.Enabled = False
            Me.btnOK.Enabled = False

            _netID = ai.NetId   '保存当前选择的设备号

            _portNo = ai.PortNo


            Ex16Type = DevTypeService.GetdevType(ai.ProjectID, ai.NetId)  '兼容模块类型

            If Me._isModify Then
                Me.ExitModify()
            End If

            'SetToolTip(ai.NetId)
            SetPanelLayout(1, False)


            Select Case Ex16Type
                Case 1
                   
                    ''如果正在修改参数，则取消修改，置位门变量，停止发送心跳包
                    'If Me._isModify Then
                    '    Me.ExitModify()
                    'End If



                    '读取参数
                    result = RefreshData(ai.PortNo)

                Case 16
                    ' SetToolTipEx16(dti.NetId)
                    ' SetPanelLayoutEx16(dti.DevType, False)

                    '如果正在修改参数，则取消修改，置位门变量，停止发送心跳包


                    ExTypeItem = ExType()

                    'If ExTypeItem Then

                    '    ExAiNum = GetEcAivalue()

                    '    If ExAiNum = 0 Then
                    '        msg.Show("未配置兼容模块探头数量！")
                    '        Exit Select

                    '    End If

                    '    result = RefreshDataEx16_type()

                    'Else
                    '读取参数
                    result = RefreshDataEx16(ai.PortNo)
                    ' End If




            End Select



            EnableModify(False)

            If result = False Then
                Me.btnModify.Enabled = False
            Else
                Me.btnModify.Enabled = True
            End If
            TreeView1.Enabled = True

        End If

    End Sub


    ''' <summary>
    ''' 刷新AI原点修正数据
    ''' </summary>
    ''' <remarks></remarks>
    Private Function RefreshData(ByVal portNo As Integer) As Boolean
        Me.Cursor = Cursors.WaitCursor
        Try
            buf = COMHelper.Instance.Send4Single(_netID, FunctionCode.WordWritableRead, _offset + (portNo - 1) * 2, 2)
        Catch ex As Exception
            Debug.WriteLine(ex.Message)
        Finally
            Me.Cursor = Cursors.Default
        End Try

        If buf Is Nothing Then
            Me.btnModify.Enabled = False
            ClearData()
            msg.ShowError("读取参数失败")
            Return False
        End If

        Me.btnModify.Enabled = True

        'For Each ctl As Control In Me.RevisePanel.Controls
        '    If ctl.GetType Is GetType(NumericUpDown) Then
        '        Dim nud As NumericUpDown = CType(ctl, NumericUpDown)
        '        If nud.Visible = True Then
        '            nud.Value = buf(nud.Tag)

        '        End If


        '    End If
        'Next

        Me.NumericUpDown1.Value = buf(0)

        Return True

    End Function
    ''' <summary>
    ''' 刷新AI原点修正数据
    ''' </summary>
    ''' <remarks></remarks>
    Private Function RefreshDataEx16(ByVal portNo As Integer) As Boolean
        Me.Cursor = Cursors.WaitCursor
        Try
            buf = COMHelper.Instance.Send4Single(_netID, FunctionCode.WordWritableRead, _offsetEx16 + (portNo - 1) * 2, 2)
        Catch ex As Exception
            Debug.WriteLine(ex.Message)
        Finally
            Me.Cursor = Cursors.Default
        End Try

        If buf Is Nothing Then
            Me.btnModify.Enabled = False
            ClearData()
            msg.ShowError("读取参数失败")
            Return False
        End If

        Me.btnModify.Enabled = True

        'For Each ctl As Control In Me.RevisePanel.Controls
        '    If ctl.GetType Is GetType(NumericUpDown) Then
        '        Dim nud As NumericUpDown = CType(ctl, NumericUpDown)
        '        nud.Value = buf(nud.Tag)
        '    End If
        'Next
        Me.NumericUpDown1.Value = buf(0)

        Return True

    End Function

    ''' <summary>
    ''' 刷新AI原点修正数据
    ''' </summary>
    ''' <remarks></remarks>
    Private Function RefreshDataEx16_type() As Boolean
        Me.Cursor = Cursors.WaitCursor
        Dim bufEx() As Single = Nothing

        Me.LabelRead.Text = "数据读取中,请稍等......"
        For i As Integer = 0 To ExAiNum - 1

            Try

                For k As Integer = 0 To 1
                    bufEx = COMHelper.Instance.Send4Single(_netID, FunctionCode.WordWritableRead, _offsetEx16 + i * 2, 2)

                    If bufEx Is Nothing Then

                    Else
                        Exit For

                    End If

                Next

            Catch ex As Exception
                Debug.WriteLine(ex.Message)
            Finally
                Me.Cursor = Cursors.Default
            End Try

            If bufEx Is Nothing Then
                nudList(i).Visible = False
                labList(i).Text = String.Format("{0}# AI端口修正系数:  无法读取", i + 1)
                Continue For
            End If
            nudList(i).Value = bufEx(0)
            bufEc(i) = bufEx(0)

        Next

        For i As Integer = 16 To ExAiNum + 16 - 1

            Try

                For k As Integer = 0 To 1
                    bufEx = COMHelper.Instance.Send4Single(_netID, FunctionCode.WordWritableRead, _offsetEx16 + i * 2, 2)

                    If bufEx Is Nothing Then

                    Else
                        Exit For

                    End If

                Next

            Catch ex As Exception
                Debug.WriteLine(ex.Message)
            Finally
                Me.Cursor = Cursors.Default
            End Try

            If bufEx Is Nothing Then
                nudList(i).Visible = False
                labList(i).Text = String.Format("{0}# AI端口修正系数:  无法读取", i)
                Continue For
            End If
            nudList(i).Value = bufEx(0)
            bufEc(i) = bufEx(0)

        Next
       
        Me.LabelRead.Text = ""
        Me.btnModify.Enabled = True


        Return True

    End Function

    Private labList(31) As Label
    Private nudList(31) As NumericUpDown
    Public Sub New()

        ' 此调用是 Windows 窗体设计器所必需的。
        InitializeComponent()

        ' 在 InitializeComponent() 调用之后添加任何初始化。
        labList(0) = Label1
     

        'For Each l As Label In labList
        '    ToolTip1.SetToolTip(l, "未使用")
        'Next

        nudList(0) = NumericUpDown1
       

        'For Each n As NumericUpDown In nudList
        '    ToolTip1.SetToolTip(n, "未使用")
        'Next
    End Sub

    ''' <summary>
    ''' 返回兼容模块类型0:未配置；1:TBCC传感器； 2：春长仪器；255:模拟传感器
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Private Function ExType() As Boolean

        Dim k As Integer
        Try
            buf1 = COMHelper.Instance.Send4UShort(_netID, FunctionCode.WordWritableRead, _offsetType, 1)
        Catch ex As Exception
            Debug.WriteLine(ex.Message)
        Finally
            Me.Cursor = Cursors.Default

        End Try

        If buf1 Is Nothing Then

            Return False
        End If

        k = buf1(0)


        If k = 1 Then
            Return True
        Else
            Return False
        End If

    End Function

End Class